package com.hk.redundantcode.templatemethod.right;


import com.hk.redundantcode.templatemethod.Item;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;

@Service
public class InternalUserCart extends AbstractCart {

    @Override
    protected void processCouponPrice(long userId, Item item) {
        item.setCouponPrice(BigDecimal.ZERO);
    }

    @Override
    protected void processDeliveryPrice(long userId, Item item) {
        item.setDeliveryPrice(BigDecimal.ZERO);
    }

//    public Cart process(long userId, Map<Long, Integer> items) {
//        Cart cart = new Cart();
//
//        List<Item> itemList = new ArrayList<>();
//        items.entrySet().stream().forEach(entry -> {
//            Item item = new Item();
//            item.setId(entry.getKey());
//            item.setPrice(Db.getItemPrice(entry.getKey()));
//            item.setQuantity(entry.getValue());
//            itemList.add(item);
//        });
//        cart.setItems(itemList);
//
//        itemList.stream().forEach(item -> {
//            //免运费
//            item.setDeliveryPrice(BigDecimal.ZERO);
//            //无优惠
//            item.setCouponPrice(BigDecimal.ZERO);
//        });
//
//        cart.setTotalItemPrice(cart.getItems().stream().map(item -> item.getPrice().multiply(BigDecimal.valueOf(item.getQuantity()))).reduce(BigDecimal.ZERO, BigDecimal::add));
//        cart.setTotalDeliveryPrice(cart.getItems().stream().map(Item::getDeliveryPrice).reduce(BigDecimal.ZERO, BigDecimal::add));
//        cart.setTotalDiscount(cart.getItems().stream().map(Item::getCouponPrice).reduce(BigDecimal.ZERO, BigDecimal::add));
//        cart.setPayPrice(cart.getTotalItemPrice().add(cart.getTotalDeliveryPrice()).subtract(cart.getTotalDiscount()));
//        return cart;
//    }
}
